import { Host, Hosts } from "nacos";

export default function weightedRandomSelect(items: Hosts): Host | null {
  if (items.length === 0) {
    return null; // 如果数组为空，返回null
  }

  // 计算总权重
  let totalWeight = items.reduce((acc, item) => acc + item.weight, 0);

  // 生成一个介于0和总权重之间的随机数
  const randomWeight = Math.random() * totalWeight;

  // 遍历数组，累加权重直到超过随机生成的权重
  let currentWeight = 0;
  for (const item of items) {
    currentWeight += item.weight;
    if (currentWeight >= randomWeight) {  
      return item; // 返回当前项
    }
  }

  // 如果没有找到匹配项（理论上不应该发生），返回数组中的最后一个项
  return items[items.length - 1];
}